//请求相关
import Nprogress from 'nprogress'
//导入nprogress的样式
import 'nprogress/nprogress.css'
//导入axios
import axios from 'axios'

//导入接口根地址
//初始化一个axios对象
const instance = axios.create({
  //请求地址前缀
  baseURL: '/proxy_url',
  //请求超时时间
  timeout: 30000,
  //自定义请求头
  headers: { token: 'foobar' },
})

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    Nprogress.start()
    return config
  },
  function (error) {
    // 对请求错误做些什么
    Nprogress.done()
    return Promise.reject(error)
  }
)
// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    Nprogress.done()
    // 对响应数据做点什么
    return response
  },
  function (error) {
    Nprogress.done()

    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

//定义一个get请求方法
export let $get = async (url, params) => {
  let { data } = await instance.get(url, { params })
  return data
}
//定义一个post请求方法  post不需要包
export let $post = async (url, params) => {
  let { data } = await instance.post(url, params)
  return data
}
//设置Token的方法，该方法，会将浏览器缓存中的token信息，添加到请求头
export let $setToken = () => {
  //将token信息，保存到请请求头中
  instance.defaults.headers.common['token'] = sessionStorage.getItem('token')
}
